﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.ServiceModel.Web;
using System.Text;
using System.Xml.Linq;
using System.ServiceModel.Channels;
using System.IO;

namespace ThreeByte.ActiveDeck.Web
{
    [ServiceContract]
    public interface IActiveDeckSyncService
    {

        [WebInvoke(Method = "POST", UriTemplate = "publish/{presentation}"), OperationContract(AsyncPattern = true)]
        IAsyncResult BeginPublish(string presentation, XElement body, AsyncCallback callback, object state);
        XElement EndPublish(IAsyncResult result);


        [WebInvoke(Method = "POST", UriTemplate = "subscribe"), OperationContract(AsyncPattern = true)]
        IAsyncResult BeginSubscribe(XElement body, AsyncCallback callback, object state);
        XElement EndSubscribe(IAsyncResult IAsyncResult);

        [WebInvoke(Method = "POST", UriTemplate = "channels/{presentation}"), OperationContract(AsyncPattern = true)]
        IAsyncResult BeginGetChannelList(string presentation, XElement body, AsyncCallback callback, object state);
        XElement EndGetChannelList(IAsyncResult IAsyncResult);
        


    }

}
